#pragma once

#include<stack>
#include<set>
#include<map>

#define Z_OBJ 1
#define Z_INT 2
#define Z_CHAR 3
#define Z_STR 4
#define Z_BOOL 5
#define Z_REAL 6
#define Z_FUNC 7
#define Z_SLICE 8

stack<map<string,int>> zhen;
map<string,pair<int,bool>> pointable;//name <point,mutable>
set<string*> pool;
typedef char Ztype;
int stack_ptr;//stack_ptr
stack<int> stack_ptr_zhen;//stack_ptr_zhen
struct value{
	union{
		string *strp;
		long long ll;
		long double ld; 
	}data;
	Ztype ty;
};
vector<value> varmap;